环境
win7 32
windbg
漏洞分析
先开启hpa,再打开poc
1 | C:\Program Files\Debugging Tools for Windows (x86)>gflags.exe /i "C:\Program Files\Mozilla Firefox\f |
打开后崩溃信息如下
1 | 0:000> g |
可以看到上层调用基本是一个虚函数调用,很有可能是一个uaf漏洞
不知道为何我这配置好后下载不了firefox的符号,还是比较头疼
所以我并不能像作者那样这么愉快地详细分析了
只能看源码(https://hg.mozilla.org/releases/mozilla-1.9.2/rev/c24f21581d77)
1 | --- a/content/base/src/nsObjectLoadingContent.cpp |
修补方式是增加了对mChannel的判断,如果为空指针就return了
如果不return下面会对mChannel赋值,由于aNewChannel不再使用,所以会free掉,即mChannel会被free掉,
1 | mChannel = aNewChannel; |
再次引用,那么就会崩溃了
具体在nsObjectLoadingContent::LoadObject里面引用(1192行:https://hg.mozilla.org/releases/mozilla-1.9.2/file/c24f21581d77/content/base/src/nsObjectLoadingContent.cpp)
1 | // From here on, we will always change the content. This means that a |
reference
《漏洞战争》